package com.hyd.manage.service.impl;

import java.util.List;
import com.hyd.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hyd.manage.mapper.StockAuditMapper;
import com.hyd.manage.domain.StockAudit;
import com.hyd.manage.service.IStockAuditService;

import static com.hyd.common.utils.SecurityUtils.getUsername;

/**
 * 库存盘点Service业务层处理
 * 
 * @author hwb
 * @date 2025-02-25
 */
@Service
public class StockAuditServiceImpl implements IStockAuditService 
{
    @Autowired
    private StockAuditMapper stockAuditMapper;

    /**
     * 查询库存盘点
     * 
     * @param auditId
     * @return 库存盘点
     */
    @Override
    public List<StockAudit> selectStockAuditById(Long auditId)
    {
        return stockAuditMapper.selectStockAuditById(auditId);
    }

    /**
     * 查询库存盘点列表
     * 
     * @param stockAudit 库存盘点
     * @return 库存盘点
     */
    @Override
    public List<StockAudit> selectStockAuditList(StockAudit stockAudit)
    {
        return stockAuditMapper.selectStockAuditList(stockAudit);
    }

    /**
     * 新增库存盘点
     * 
     * @param stockAudit 库存盘点
     * @return 结果
     */
    @Override
    public int insertStockAudit(StockAudit stockAudit)
    {
        // 设置错误数
        stockAudit.setErrorCount(Math.abs(stockAudit.getStockQuantity() - stockAudit.getExpectedCount()));
        // 盘点时间
        stockAudit.setAuditDate(DateUtils.getNowDate());
        // 设置盘点人
        stockAudit.setOperator(getUsername());
        // 设置创建时间
        stockAudit.setCreateTime(DateUtils.getNowDate());
        return stockAuditMapper.insertStockAudit(stockAudit);
    }

    /**
     * 修改库存盘点
     * 
     * @param stockAudit 库存盘点
     * @return 结果
     */
    @Override
    public int updateStockAudit(StockAudit stockAudit)
    {
        stockAudit.setUpdateTime(DateUtils.getNowDate());
        return stockAuditMapper.updateStockAudit(stockAudit);
    }

    /**
     * 批量删除库存盘点
     * 
     * @param auditId 需要删除的库存盘点主键
     * @return 结果
     */
    @Override
    public int deleteStockAuditByIds(Long[] auditId)
    {
        return stockAuditMapper.deleteStockAuditByIds(auditId);
    }

    /**
     * 删除库存盘点信息
     * 
     * @param id 库存盘点主键
     * @return 结果
     */
    @Override
    public int deleteStockAuditById(Long id)
    {
        return stockAuditMapper.deleteStockAuditById(id);
    }
}
